package ec.edu.uce.tour.dao.general;

import java.util.List;

import javax.persistence.Query;

import ec.edu.uce.tour.dao.crud.impl.AccesoDatosBean;
import ec.edu.uce.tour.dao.util.ParametroSentencia;
import ec.edu.uce.tour.dto.SelectOneListDTO;
import ec.edu.uce.tour.excepcion.UceTourException;

/**
 * 
 * @author 
 *
 */
public class CatalogoDao<T> extends AccesoDatosBean<T>{

	@SuppressWarnings("unchecked")
	public List<SelectOneListDTO> obtenerDatosSelectList(Class<?> nombre, String campoId, String campoValue,String estadoCampo, ParametroSentencia parametro) throws UceTourException
	{
		try{
			String condicion="";
			if(estadoCampo!= null){
				condicion = " where " + estadoCampo + " =:" + parametro.getNameParameter();
			}
			String query = "select new ec.edu.uce.tour.dto.SelectOneListDTO("+campoId+","+campoValue+") from "+ nombre.getSimpleName();
			
			if(!condicion.equals(""))
			{
				query = query + condicion;
			}
			query = query + " order by " + campoValue;
			Query q = em.createQuery(query);
			if(!condicion.equals(""))
			{
				q.setParameter( parametro.getNameParameter(), parametro.getValueParameter());
			}
			return q.getResultList();
		}
		catch(Exception e)
		{
			throw new UceTourException("No se puede cargar los datos", e);
		}
	}

}
